//import java.util.HashMap;
//import java.util.Map;
//import java.util.Scanner;
//
//public class FileManager {
//    private Map<String, User> users;
//    private User currentUser;
//    private DiskManager diskManager;
//    private Scanner scanner;
//
//    public FileManager() {
//        users = new HashMap<>();
//        currentUser = null;
//        diskManager = new DiskManager();
//        scanner = new Scanner(System.in);
//    }
//
//    public void login() {
//        System.out.print("Username: ");
//        String username = scanner.nextLine();
//        System.out.print("Password: ");
//        String password = scanner.nextLine();
//
//        User user = users.get(username);
//        if (user != null && user.getPassword().equals(password)) {
//            currentUser = user;
//            System.out.println("Login successful!");
//        } else {
//            System.out.println("Invalid username or password.");
//        }
//    }
//
//    public void dir() {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        Directory currentDirectory = currentUser.getCurrentDirectory();
//        if (currentDirectory == null) {
//            System.out.println("No files or directories.");
//            return;
//        }
//
//        System.out.println("Files:");
////        for (File file : currentDirectory.getFiles()) {
////            System.out.println(file.getName());
////        }
//
//        System.out.println("Directories:");
//        for (Directory directory : currentDirectory.getDirectories()) {
//            System.out.println(directory.getName());
//        }
//    }
//
//    public void create(String filename) {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        Directory currentDirectory = currentUser.getCurrentDirectory();
//        if (currentDirectory == null) {
//            System.out.println("No files or directories.");
//            return;
//        }
//
//        if (currentDirectory.getFile(filename) != null) {
//            System.out.println("File already exists: " + filename);
//            return;
//        }
//
//        int blockId = diskManager.allocateBlock();
//        if (blockId == -1) {
//            System.out.println("No free disk space.");
//            return;
//        }
//
//        File file = new File(filename, blockId);
//        currentDirectory.addFile(file);
//        System.out.println("File created: " + filename);
//    }
//
//    public void delete(String filename) {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        Directory currentDirectory = currentUser.getCurrentDirectory();
//        if (currentDirectory == null) {
//            System.out.println("No files or directories.");
//            return;
//        }
//
//        File file = currentDirectory.getFile(filename);
//        if (file == null) {
//            System.out.println("File not found: " + filename);
//            return;
//        }
//
//        diskManager.freeBlock(file.getBlockId());
//        currentDirectory.removeFile(file);
//        System.out.println("File deleted: " + filename);
//    }
//
//    public void open(String filename) {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        Directory currentDirectory = currentUser.getCurrentDirectory();
//        if (currentDirectory == null) {
//            System.out.println("No files or directories.");
//            return;
//        }
//
//        File file = currentDirectory.getFile(filename);
//        if (file == null) {
//            System.out.println("File not found: " + filename);
//            return;
//        }
//
//        currentUser.setCurrentFile(file);
//        System.out.println("File opened: " + filename);
//    }
//
//    public void close() {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        File currentFile = currentUser.getCurrentFile();
//        if (currentFile == null) {
//            System.out.println("No file is currently open.");
//            return;
//        }
//
//        currentUser.setCurrentFile(null);
//        System.out.println("File closed: " + currentFile.getName());
//    }
//
//    public void read() {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        File currentFile = currentUser.getCurrentFile();
//        if (currentFile == null) {
//            System.out.println("No file is currently open.");
//            return;
//        }
//
//        String content = diskManager.readBlock(currentFile.getBlockId());
//        System.out.println("File content:");
//        System.out.println(content);
//    }
//
//    public void write(String content) {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        File currentFile = currentUser.getCurrentFile();
//        if (currentFile == null) {
//            System.out.println("No file is currently open.");
//            return;
//        }
//
//        diskManager.writeBlock(currentFile.getBlockId(), content);
//        System.out.println("File content updated.");
//    }
//
//    public void mkdir(String directoryName) {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        Directory currentDirectory = currentUser.getCurrentDirectory();
//        if (currentDirectory == null) {
//            System.out.println("No files or directories.");
//            return;
//        }
//
//        if (currentDirectory.getDirectory(directoryName) != null) {
//            System.out.println("Directory already exists: " + directoryName);
//            return;
//        }
//
//        Directory directory = new Directory(directoryName);
//        currentDirectory.addDirectory(directory);
//        System.out.println("Directory created: " + directoryName);
//    }
//
//    public void remove(String directoryName) {
//        if (currentUser == null) {
//            System.out.println("Please login first.");
//            return;
//        }
//
//        Directory currentDirectory = currentUser.getCurrentDirectory();
//        if (currentDirectory == null) {
//            System.out.println("No files or directories.");
//            return;
//        }
//
//        Directory directory = currentDirectory.getDirectory(directoryName);
//        if (directory == null) {
//            System.out.println("Directory not found: " + directoryName);
//            return;
//        }
//
//        currentDirectory.removeDirectory(directory);
//        System.out.println("Directory removed: " + directoryName);
//    }
//
//    public void run() {
//        while (true) {
//            System.out.print("> ");
//            String command = scanner.nextLine();
//
//            if (command.startsWith("login")) {
//                login();
//            } else if (command.startsWith("dir")) {
//                dir();
//            } else if (command.startsWith("create")) {
//                String filename = command.substring(7);
//                create(filename);
//            } else if (command.startsWith("delete")) {
//                String filename = command.substring(7);
//                delete(filename);
//            } else if (command.startsWith("open")) {
//                String filename = command.substring(5);
//                open(filename);
//            } else if (command.startsWith("close")) {
//                close();
//            } else if (command.startsWith("read")) {
//                read();
//            } else if (command.startsWith("write")) {
//                String content = command.substring(6);
//                write(content);
//            } else if (command.startsWith("mkdir")) {
//                String directoryName = command.substring(6);
//                mkdir(directoryName);
//            } else if (command.startsWith("remove")) {
//                String directoryName = command.substring(7);
//                remove(directoryName);
//            } else if (command.startsWith("exit")) {
//                break;
//            } else {
//                System.out.println("Invalid command.");
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        FileManager fileManager = new FileManager();
//        fileManager.run();
//    }
//}
//
//class User {
//    private String username;
//    private String password;
//    private Directory currentDirectory;
//    private File currentFile;
//
//    public User(String username, String password) {
//        this.username = username;
//        this.password = password;
//        this.currentDirectory = null;
//        this.currentFile = null;
//    }
//
//    public String getUsername() {
//        return username;
//    }
//
//    public String getPassword() {
//        return password;
//    }
//
//    public Directory getCurrentDirectory() {
//        return currentDirectory;
//    }
//
//    public void setCurrentDirectory(Directory currentDirectory) {
//        this.currentDirectory = currentDirectory;
//    }
//
//    public File getCurrentFile() {
//        return currentFile;
//    }
//
//    public void setCurrentFile(File currentFile) {
//        this.currentFile = currentFile;
//    }
//}
//
//class Directory {
//    private String name;
//    private Map<String, File> files;
//    private Map<String, Directory> directories;
//
//    public Directory(String name) {
//        this.name = name;
//        this.files = new HashMap<>();
//        this.directories = new HashMap<>();
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public void addFile(File file) {
//        files.put(file.getName(), file);
//    }
//
//    public void removeFile(File file) {
//        files.remove(file.getName());
//    }
//
//    public File getFile(String filename) {
//        return files.get(filename);
//    }
//
//    public void addDirectory(Directory directory) {
//        directories.put(directory.getName(), directory);
//    }
//
//    public void removeDirectory(Directory directory) {
//        directories.remove(directory.getName());
//    }
//
//    public Directory getDirectory(String directoryName) {
//        return directories.get(directoryName);
//    }
//
//    public Map<String, File> getFiles()    {
//        return files;
//    }
//
//    public Map<String, Directory> getDirectories() {
//        return directories;
//    }
//}
//
//class File {
//    private String name;
//    private int blockId;
//
//    public File(String name, int blockId) {
//        this.name = name;
//        this.blockId = blockId;
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public int getBlockId() {
//        return blockId;
//    }
//}
//
//class DiskManager {
//    private static final int NUM_BLOCKS = 100;
//    private boolean[] blocks;
//
//    public DiskManager() {
//        blocks = new boolean[NUM_BLOCKS];
//        for (int i = 0; i < NUM_BLOCKS; i++) {
//            blocks[i] = false;
//        }
//    }
//
//    public int allocateBlock() {
//        for (int i = 0; i < NUM_BLOCKS; i++) {
//            if (!blocks[i]) {
//                blocks[i] = true;
//                return i;
//            }
//        }
//        return -1;
//    }
//
//    public void freeBlock(int blockId) {
//        if (blockId >= 0 && blockId < NUM_BLOCKS) {
//            blocks[blockId] = false;
//        }
//    }
//
//    public String readBlock(int blockId) {
//        // Read the content of the block from the disk
//        return "This is the content of block " + blockId;
//    }
//
//    public void writeBlock(int blockId, String content) {
//        // Write the content to the block on the disk
//        System.out.println("Writing content to block " + blockId + ": " + content);
//    }
//}
